import { Controller, Get, Inject } from '@midwayjs/core';
import { IPService } from '@/service/firmware/getTime.service';
import { resBuild } from '@utils/resBuild'; // 导入 resBuild 工具类
import { Context } from '@midwayjs/koa';

@Controller('/ip')
export class IPController {
  @Inject()
  IPService: IPService;
  @Get('/getTime')
  async getTime(ctx: Context) {
    const { timestamp, salt } = ctx.query;
    console.log('timestamp:', timestamp);
    console.log('salt:', salt);

    if (!timestamp || !salt) {
      return resBuild.fail('缺少时间戳或salt值');
    }

    try {
      // 调用 IPService 处理业务逻辑
      const result = await this.IPService.getTime(timestamp, salt);
      console.log('result:', result);
      return resBuild.data(result); // 使用 resBuild.data 返回标准格式的成功响应
    } catch (error) {
      console.error('获取时间失败:', error.message);
      return resBuild.fail(error.message || '获取时间失败');
    }
  }

  @Get('/')
  async getIP() {
    return 11111;
  }

  // 获取本地时间 (通过 IP 定位)
  @Get('/getLocalTime')
  async getLocalTime(ctx: Context) {
    const { timestamp } = ctx.query;
    console.log('timestamp:', timestamp);

    if (!timestamp) {
      return resBuild.fail('缺少时间戳');
    }

    try {
      // 调用 IPService 处理业务逻辑
      const result = await this.IPService.getsysTime();
      console.log('result:', result);
      var date = new Date(result.localTime);
      var time = date.getTime();
      // 返回 IP 和时间戳的拼接字符串
      return `${result.ip}-${time}`;
      // return result.ip + result.localTime;
      // return resBuild.data(result); // 使用 resBuild.data 返回标准格式的成功响应
    } catch (error) {
      console.error('获取时间失败:', error.message);
      return resBuild.fail(error.message || '获取时间失败');
    }
  }

  @Get('/getTestLocalTime')
  async getTestLocalTime(ctx: Context) {
    const { timestamp } = ctx.query;
    console.log('timestamp:', timestamp);

    if (!timestamp) {
      return resBuild.fail('缺少时间戳');
    }

    try {
      // 调用 IPService 处理业务逻辑
      const result = await this.IPService.getsysTime();
      console.log('result:', result);
      // var date = new Date(result.localTime);
      var date = new Date(); // 将时间转换为东八区时间
      // date改为当前时间的23：59：30
      date.setHours(23);
      date.setMinutes(55);
      date.setSeconds(0);
      date.setMilliseconds(0);
      console.log('date:', date);
      var time = date.getTime();
      // 返回 IP 和时间戳的拼接字符串
      return `${result.ip}-${time}`;
      // return result.ip + result.localTime;
      // return resBuild.data(result); // 使用 resBuild.data 返回标准格式的成功响应
    } catch (error) {
      console.error('获取时间失败:', error.message);
      return resBuild.fail(error.message || '获取时间失败');
    }
  }
}
